/*
  功能： 完成一些费时或不需要等待结果的数据库操作。
        读取协议表格，获得协议，存储在成员变量mapHeadProtocal中。可以存储多个协议.
        如果程序中需要立即返回结果，则在主线程中，直接调用该类的函数，而不是用信号与槽机制。
  */

#ifndef CLIENTDATAPROCESS_H
#define CLIENTDATAPROCESS_H

#include <QObject>
#include <QTimer>

class QSqlQuery;
class GetRequestProcess;

class ClientDataProcess : public QObject
{
    Q_OBJECT
public:
    ClientDataProcess(QWidget *parent = 0);

    ~ClientDataProcess();

    bool createConnection(const QString  dataBase,const QString  host,
        const QString  user, const QString  passWord,const QString connectionName);

signals:
     void sigErrorInfo(QString errorStr);
     void sigClientDataProcessDone(QByteArray result,QByteArray IP,quint16 port);

public slots:

     void slotTimerEventDBConnect();
     void slotProcessClientData(QByteArray appData,QByteArray hostIP,quint16 port);
     void eventOfSQLTimer();

private:
     QByteArray analyzeNrmSQLDatagram( QByteArray& datagram);
     QByteArray analyzeRealTimeSQLDatagram( QByteArray& datagram,QByteArray clientIP,quint16 clientPort);

     QTimer *timerForDBConnect;

public:
    QSqlQuery *qury;
    QString dboConnectionName;

private:

    //主要是为SQL语句设置的timer，控制实时数据的发送间隔和是否停止发送。
    //默认超过5分钟后，停止发送实时数据
    QTimer *timerForSQL; //大致为1s定时器。用于实时监测命令

    GetRequestProcess* getReqProcess;
private slots:
    void slotConnectDB();

};

#endif // CLIENTDATAPROCESS_H
